package com.example.gulimallcoupon.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serial;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;

/**
 * 优惠券信息
 * 
 * @author zzl
 * {@code @email} zzl@gmail.com
 * {@code @date} 2025-10-27 08:42:24
 */
//@Data
@TableName("sms_coupon")
public class CouponEntity implements Serializable {
	@Serial
	private static final long serialVersionUID = 1L;

	/**
	 * id
	 */
	@TableId
	private Long id;
	/**
	 * 优惠卷类型[0->全场赠券；1->会员赠券；2->购物赠券；3->注册赠券]
	 */
	private Integer couponType;
	/**
	 * 优惠券图片
	 */
	private String couponImg;
	/**
	 * 优惠卷名字
	 */
	private String couponName;
	/**
	 * 数量
	 */
	private Integer num;
	/**
	 * 金额
	 */
	private BigDecimal amount;
	/**
	 * 每人限领张数
	 */
	private Integer perLimit;
	/**
	 * 使用门槛
	 */
	private BigDecimal minPoint;
	/**
	 * 开始时间
	 */
	private Date startTime;
	/**
	 * 结束时间
	 */
	private Date endTime;
	/**
	 * 使用类型[0->全场通用；1->指定分类；2->指定商品]
	 */
	private Integer useType;
	/**
	 * 备注
	 */
	private String note;
	/**
	 * 发行数量
	 */
	private Integer publishCount;
	/**
	 * 已使用数量
	 */
	private Integer useCount;
	/**
	 * 领取数量
	 */
	private Integer receiveCount;
	/**
	 * 可以领取的开始日期
	 */
	private Date enableStartTime;
	/**
	 * 可以领取的结束日期
	 */
	private Date enableEndTime;
	/**
	 * 优惠码
	 */
	private String code;
	/**
	 * 可以领取的会员等级[0->不限等级，其他-对应等级]
	 */
	private Integer memberLevel;
	/**
	 * 发布状态[0-未发布，1-已发布]
	 */
	private Integer publish;

	public CouponEntity() {
	}

	public CouponEntity(Long id, Integer couponType, String couponImg, String couponName, Integer num, BigDecimal amount, Integer perLimit, BigDecimal minPoint, Date startTime, Date endTime, Integer useType, String note, Integer publishCount, Integer useCount, Integer receiveCount, Date enableStartTime, Date enableEndTime, String code, Integer memberLevel, Integer publish) {
		this.id = id;
		this.couponType = couponType;
		this.couponImg = couponImg;
		this.couponName = couponName;
		this.num = num;
		this.amount = amount;
		this.perLimit = perLimit;
		this.minPoint = minPoint;
		this.startTime = startTime;
		this.endTime = endTime;
		this.useType = useType;
		this.note = note;
		this.publishCount = publishCount;
		this.useCount = useCount;
		this.receiveCount = receiveCount;
		this.enableStartTime = enableStartTime;
		this.enableEndTime = enableEndTime;
		this.code = code;
		this.memberLevel = memberLevel;
		this.publish = publish;
	}

	/**
	 * 获取
	 * @return id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * 设置
	 * @param id
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * 获取
	 * @return couponType
	 */
	public Integer getCouponType() {
		return couponType;
	}

	/**
	 * 设置
	 * @param couponType
	 */
	public void setCouponType(Integer couponType) {
		this.couponType = couponType;
	}

	/**
	 * 获取
	 * @return couponImg
	 */
	public String getCouponImg() {
		return couponImg;
	}

	/**
	 * 设置
	 * @param couponImg
	 */
	public void setCouponImg(String couponImg) {
		this.couponImg = couponImg;
	}

	/**
	 * 获取
	 * @return couponName
	 */
	public String getCouponName() {
		return couponName;
	}

	/**
	 * 设置
	 * @param couponName
	 */
	public void setCouponName(String couponName) {
		this.couponName = couponName;
	}

	/**
	 * 获取
	 * @return num
	 */
	public Integer getNum() {
		return num;
	}

	/**
	 * 设置
	 * @param num
	 */
	public void setNum(Integer num) {
		this.num = num;
	}

	/**
	 * 获取
	 * @return amount
	 */
	public BigDecimal getAmount() {
		return amount;
	}

	/**
	 * 设置
	 * @param amount
	 */
	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}

	/**
	 * 获取
	 * @return perLimit
	 */
	public Integer getPerLimit() {
		return perLimit;
	}

	/**
	 * 设置
	 * @param perLimit
	 */
	public void setPerLimit(Integer perLimit) {
		this.perLimit = perLimit;
	}

	/**
	 * 获取
	 * @return minPoint
	 */
	public BigDecimal getMinPoint() {
		return minPoint;
	}

	/**
	 * 设置
	 * @param minPoint
	 */
	public void setMinPoint(BigDecimal minPoint) {
		this.minPoint = minPoint;
	}

	/**
	 * 获取
	 * @return startTime
	 */
	public Date getStartTime() {
		return startTime;
	}

	/**
	 * 设置
	 * @param startTime
	 */
	public void setStartTime(Date startTime) {
		this.startTime = startTime;
	}

	/**
	 * 获取
	 * @return endTime
	 */
	public Date getEndTime() {
		return endTime;
	}

	/**
	 * 设置
	 * @param endTime
	 */
	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}

	/**
	 * 获取
	 * @return useType
	 */
	public Integer getUseType() {
		return useType;
	}

	/**
	 * 设置
	 * @param useType
	 */
	public void setUseType(Integer useType) {
		this.useType = useType;
	}

	/**
	 * 获取
	 * @return note
	 */
	public String getNote() {
		return note;
	}

	/**
	 * 设置
	 * @param note
	 */
	public void setNote(String note) {
		this.note = note;
	}

	/**
	 * 获取
	 * @return publishCount
	 */
	public Integer getPublishCount() {
		return publishCount;
	}

	/**
	 * 设置
	 * @param publishCount
	 */
	public void setPublishCount(Integer publishCount) {
		this.publishCount = publishCount;
	}

	/**
	 * 获取
	 * @return useCount
	 */
	public Integer getUseCount() {
		return useCount;
	}

	/**
	 * 设置
	 * @param useCount
	 */
	public void setUseCount(Integer useCount) {
		this.useCount = useCount;
	}

	/**
	 * 获取
	 * @return receiveCount
	 */
	public Integer getReceiveCount() {
		return receiveCount;
	}

	/**
	 * 设置
	 * @param receiveCount
	 */
	public void setReceiveCount(Integer receiveCount) {
		this.receiveCount = receiveCount;
	}

	/**
	 * 获取
	 * @return enableStartTime
	 */
	public Date getEnableStartTime() {
		return enableStartTime;
	}

	/**
	 * 设置
	 * @param enableStartTime
	 */
	public void setEnableStartTime(Date enableStartTime) {
		this.enableStartTime = enableStartTime;
	}

	/**
	 * 获取
	 * @return enableEndTime
	 */
	public Date getEnableEndTime() {
		return enableEndTime;
	}

	/**
	 * 设置
	 * @param enableEndTime
	 */
	public void setEnableEndTime(Date enableEndTime) {
		this.enableEndTime = enableEndTime;
	}

	/**
	 * 获取
	 * @return code
	 */
	public String getCode() {
		return code;
	}

	/**
	 * 设置
	 * @param code
	 */
	public void setCode(String code) {
		this.code = code;
	}

	/**
	 * 获取
	 * @return memberLevel
	 */
	public Integer getMemberLevel() {
		return memberLevel;
	}

	/**
	 * 设置
	 * @param memberLevel
	 */
	public void setMemberLevel(Integer memberLevel) {
		this.memberLevel = memberLevel;
	}

	/**
	 * 获取
	 * @return publish
	 */
	public Integer getPublish() {
		return publish;
	}

	/**
	 * 设置
	 * @param publish
	 */
	public void setPublish(Integer publish) {
		this.publish = publish;
	}

	public String toString() {
		return "CouponEntity{id = " + id + ", couponType = " + couponType + ", couponImg = " + couponImg + ", couponName = " + couponName + ", num = " + num + ", amount = " + amount + ", perLimit = " + perLimit + ", minPoint = " + minPoint + ", startTime = " + startTime + ", endTime = " + endTime + ", useType = " + useType + ", note = " + note + ", publishCount = " + publishCount + ", useCount = " + useCount + ", receiveCount = " + receiveCount + ", enableStartTime = " + enableStartTime + ", enableEndTime = " + enableEndTime + ", code = " + code + ", memberLevel = " + memberLevel + ", publish = " + publish + "}";
	}
}
